#include <iostream>
#include <string>
#include <map>
using namespace std;
int main()
{
    map<string, int> student;
    // 待插入的键-值对：学生 Alice 的成绩为 90
    pair<string, int> kvPair{"Alice", 90};
    student.insert(kvPair);
    student["Bob"] = 25;
    student.insert({"Charlie", 88});
    for (auto i : student)
    {
        cout << i.first << ':' << i.second << endl;
    }
    cout << "Bob's score is " << student["Bob"] << endl;
    // Carol 并不是已有的键。在执行下面语句时，
    // 首先会插入 {"Carol", 0} 这个键-值对，
    // 然后再做赋值的事情。
    student["Carol"] = 75;
    cout << "Carol's score is " << student["Carol"] << endl;

    cout << "------------------" << endl;

    // 不允许通过迭代器修改键值对中的键部分，但可以修改它的值部分
    for (auto &i : student)
    {
        // i.first += "1";
        i.second += 9999;
        cout << i.first << ':' << i.second << endl;
    }
    return 0;
}
